\newpage
\section{Funktionstest}\label{sec:testing_funktionstest}
\subsection{Testfälle}

\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommander_installieren} - Erweiterung installieren} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommander_installieren}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & Erweiterung installieren\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommander_installieren}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Nutzer lädt die XCommander Erweiterung herunter und installiert sie.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Erweiterung wird im Browser installiert\\\hline 
\end{longtable}

\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommander_updaten} - Erweiterung updaten} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommander_updaten}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & Erweiterung updaten\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommander_updaten}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Dem Nutzer werden potentielle Updates der Erweiterung angezeigt.
   	  \item Der Nutzer lädt das Update herunter und installiert es.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Erweiterung wird im Browser aktualisiert\\\hline 
\end{longtable}

\newpage
\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommander_verwalten} - XCommander verwalten} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommander_verwalten}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & Erweiterung verwalten\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommander_verwalten}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Der Nutzer öffnet die Einstellungsseite der Erweiterung.
   	  \item Der Nutzer nimmt Änderungen vor und speichert sie.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Nach erneutem aufrufen der Einstellungsseite werden die geänderten Werte angezeigt.\\\hline 
\end{longtable}

\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommand_installieren} - XCommand installieren} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommand_installieren}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & XCommand installieren\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommand_installieren}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Der Nutzer installiert ein XCommand vom lokalen Filesystem oder einer Webseite.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Nach der Installation wird die Einstellungsseite geöffnet und zeigt das installierte XCommand in der Kommandoliste.\\\hline 
\end{longtable}

\newpage
\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommand_deinstallieren} - XCommand deinstallieren} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommand_deinstallieren}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & XCommand deinstallieren\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommand_deinstallieren}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Der Nutzer betätigt den Deinstallieren"=Button eins XCommands auf der Einstellungsseite.
   	  \item Der Nutzer bestätigt die Deinstallation des XCommands.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Das XCommand wird aus der Kommandoliste auf der Einstellungsseite entfernt.\\\hline 
\end{longtable}

\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommand_updaten} - XCommand updaten} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommand_updaten}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & XCommand updaten\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommand_updaten}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Dem Nutzer werden potentielle Updates eines XCommands in der Einstellungsseite angezeigt.
   	  \item Der Nutzer bestätigt die Aktualisierung des XCommands.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Das aktualisierte XCommand wird mit einer höheren Versionsnummer in der Einstellungsseite angezeigt.\\\hline 
\end{longtable}

\newpage
\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommand_deactivate} - XCommand deaktivieren} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommand_deactivate}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & XCommand deaktivieren\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommand_deactivate}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Der Nutzer deaktiviert ein XCommand in der Einstellungsseite der Erweiterung.
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Das XCommand erscheint nicht mehr in der Kommandoliste und kann nicht mehr verwendet werden.\\\hline 
\end{longtable}

\begin{longtable}{p{0.31\textwidth}p{0.62\textwidth}}
\caption{\reftestcase{tc:xcommand_run} - XCommand ausführen} \\
   \hline
   \textbf{Bezeichner} & \testcase{tc:xcommand_run}\\\hline\rowcolor[gray]{0.9}
   \textbf{Name} & XCommand ausführen\\
   \textbf{Version} & 1.0\\\rowcolor[gray]{0.9}
   \textbf{Autoren} & Simon Binkert\\
   \textbf{Referenz} & \refusecase{uc:xcommand_run}\\\rowcolor[gray]{0.9}
   \textbf{Szenario} & 
   	\begin{compactenum}
      \vspace{-12pt}
   	  \item Der Nutzer gibt ein XCommand und die erforderlichen Argumente in der Kommandozeile der Erweiterung ein.
   	  \item Nachdem die Argumente des XCommands geparst wurden, führt der Nutzer das XCommand durch drücken der Return"=Taste aus. 
   	  \vspace{-12pt}
   	\end{compactenum}\\
   \textbf{Erwartetes Ergebnis} & Die \verb|execute()|-Methode des XCommands wird aufgerufen und ausgeführt.\\\hline 
\end{longtable}

\subsection{Testprotokoll}
\begin{longtable}{p{0.10\textwidth}p{0.34\textwidth}c c c}
\caption{Funktionstest - Testprotokoll}\label{tbl:testprotokoll} \\
   \hline
   \textbf{Testfall} & \textbf{Name} & \textbf{Chrome} & \textbf{Safari} & \textbf{Opera} \\\hline\rowcolor[gray]{0.9}
   \reftestcase{tc:xcommander_installieren} & Erweiterung installieren & $\surd$ & $\surd$ & $\surd$ \\
   \reftestcase{tc:xcommander_updaten} & Erweiterung updaten & - & - & - \\\rowcolor[gray]{0.9}
   \reftestcase{tc:xcommander_verwalten} & Erweiterung verwalten & $\surd$ & $\surd$ & $\surd$ \\
   \reftestcase{tc:xcommand_installieren} & XCommand installieren & $\surd$ & $(\surd)$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reftestcase{tc:xcommand_deinstallieren} & XCommand deinstallieren & $\surd$ & $\surd$ & $\surd$ \\
   \reftestcase{tc:xcommand_updaten} & XCommand updaten & $\surd$ & $\surd$ & $\surd$ \\\rowcolor[gray]{0.9}
   \reftestcase{tc:xcommand_deactivate} & XCommand deaktivieren & $\surd$ & $\surd$ & $\surd$ \\
   \reftestcase{tc:xcommand_run} & XCommand ausführen & $\surd$ & $\surd$ & $\surd$ \\\hline
\end{longtable}

Die Testfälle \reftestcase{tc:xcommander_installieren} bis \reftestcase{tc:xcommand_run} wurden für die drei Browser Chrome, Safari und Opera durchgeführt. Das Testprotokoll aus \autoref{tbl:testprotokoll} zeigt das Resultat der einzelnen Funktionstests.

Da gemäss Unterabschnitt \ref{subsubsec:implementation_xcommander_updaten} die automatische Update"=Funktion der Erweiterung noch nicht unterstützt wird, konnte der Testfall \reftestcase{tc:xcommander_updaten} nicht angewendet und ausgeführt werden.

Testfall \reftestcase{tc:xcommand_installieren} wurde vom Safari Browser nur teilweise bestanden. Der aktuelle Safari Browser in der Version 5.1 unterstützt die File API nicht, um lokale Files mittels JavaScript einzulesen. Daher können im Safari XCommands nur über eine Webseite installiert werden.
